项目中会遇到想要把apk,第三方jar包,或者sdk等的代码实现进行修改,比如放开日志打印开关等,这时候就需要把jar包中的class进行反编译出来,然后进行修改之后重新打包。
反编译出class文件
apk的话用dex2jar进行对dex逆向成jar包。
jar包的话直接解压出class文件。
修改jar里面的class文件一般有两种方式。
正向
copy出要修改的class,在别的项目新建文件,代码同要修改的class,导入需要的依赖类资源等,正向导出jar包,然后解压copy出class文件,这种方式主要是修改少量代码,相对独立依赖较少的代码,相对容易,不过两次打jar包的jdk版本有要求,可能会导致不兼容。
javac命令,编译为class字节码
1 | javac hello.java |
逆向
jclasslib 这个工具貌似是可以搞的